/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Nicolas
 */
public class Process {
    
    //Numéro du process
    private int numProcess;
    
    private HorlogeLamport horloge;
            
    private Pere pere;
    
    private Tampon tamponDeTrace;
    private Client client;
        
    private Tampon tamponDeReception;
    private Recepteur recepteur;
    //Numéro du port utilisé pour la socket du recepteur
    private int numPortRecepeteur = 8081;
    
    private Tampon tamponDEmission;
    private Emetteur emetteur;
    
    /**
     * Constructeur
     */
    public Process(int _numProcess)
    {
        this.numProcess = _numProcess;
        
        //Création de l'horloge
        horloge = new HorlogeLamport(this);
        
        //Création du thread père
        pere = new Pere(this);
                
        //Création du tampon de trace et client
        tamponDeTrace = new Tampon(this);
        client = new Client(this);
        client.start();
        
        //Création du tampon de reception et du recepteur
        tamponDeReception = new Tampon(this);
        recepteur = new Recepteur(this, numPortRecepeteur);
        recepteur.start();
        
        //Création du tampon d'émission et de l'émetteur
        tamponDEmission = new Tampon(this);
        emetteur = new Emetteur(this);
    }
    
    /**
     * Getter pour tous les élements
     */ 
    
   public int getNumProcess()
   {
       return this.numProcess;
   }
    
   public Pere getPere()
   {
       return this.pere;
   }  
   
   public Tampon getTamponDeTrace()
   {
       return this.tamponDeTrace;
   }
   
   public Client getClient()
   {
       return this.client;
   }
    
   public Tampon getTamponDeReception()
   {
       return this.tamponDeReception;
   }
   
   public Recepteur getRecepteur()
   {
       return this.recepteur;
   }
   
   public Tampon getTamponDEmission()
   {
       return this.tamponDEmission;
   }
   
   public Emetteur getEmetteur()
   {
       return this.emetteur;
   }
}
